package com.estacionamientos

import org.springframework.flex.remoting.RemotingDestination
import org.springframework.flex.remoting.RemotingInclude

import com.estacionamientos.dto.EstacionamientoDTO
import com.estacionamientos.dto.EstacionamientoSimpleDTO

@RemotingDestination
class EstacionamientoService {

	def estacionamientoSimpleMapper;
	def estacionamientoMapper;
    static transactional = true
	def daoAuthenticationProvider
	
    public Estacionamiento saveObj(Estacionamiento area){
		
		area.setPassword(daoAuthenticationProvider.getPasswordEncoder().encodePassword("gaston", area.getPassword()))
		if(area.save(flush: true)){
			return area;
		}
    }
    
    def listObj(){
       def g = [instanceList: Estacionamiento.list(), instanceTotal: Estacionamiento.count()]
       return g;
    }
	
	@RemotingInclude
	public List<EstacionamientoSimpleDTO> getAll(){
		def listaEstacionamientos = Estacionamiento.findAll()
		List listaDto = estacionamientoSimpleMapper.mapList(listaEstacionamientos)
		
		return listaDto
	}
	
	
	public EstacionamientoDTO getEstacionamiento(Long idEstacionamiento){
		Estacionamiento obj = Estacionamiento.get(idEstacionamiento)
		EstacionamientoDTO dto = estacionamientoMapper.toDto(obj)
		return dto
	}
	
	public List<EstacionamientoDTO> buscarEstacionamientos(EstacionamientoDTO estacionamientoDTO){
		
		StringBuffer sb = new StringBuffer()
		Map parametros = new HashMap()
		sb.append("from Estacionamiento as e where 1 = 1 ")
		
		if(estacionamientoDTO.getTechado()!=null){
			sb.append("and e.techado = :techado")
			parametros.put("techado", estacionamientoDTO.getTechado())
		}
		
		def listaEstacionamientos = Estacionamiento.findAll(sb.toString(),parametros)
		
		def listaDTO = listaEstacionamientos.toDTO(EstacionamientoDTO)
		return listaDTO;
	}
	
    def getObj(String id){
        def instance = Estacionamiento.get(id)
        return instance
    }
    public void deleteObj(Estacionamiento obj){
        obj.delete(flush: true)

    }
	
	/**
	 * dummies
	 */
	public void crearEstacionamientosDummies(){
		Estacionamiento e1 = new Estacionamiento()
		guardarEstacionamientoDummie("userpepe","passwordpepe","cuitpepe","contactopepe","razonpepe",true);
		guardarEstacionamientoDummie("pepe1","pepe1","pepe1","pepe1","pepe1",true);
		guardarEstacionamientoDummie("pepe2","pepe2","pepe2","pepe2","pepe2",true);
		guardarEstacionamientoDummie("pepe3","pepe3","pepe3","pepe3","pepe3",true);
		guardarEstacionamientoDummie("pepe4","pepe4","pepe4","pepe4","pepe4",true);
		
	}
	
	private guardarEstacionamientoDummie(String username, String password,String cuit, String nombreContacto,String razonSocial, Boolean techado){
		Estacionamiento est = new Estacionamiento()
		
		est.setDireccion(new Direccion(direccion:"guardia Vieja 4288 4c").save())
		est.setUsername username
		est.setCuit cuit
		est.setPassword password
		est.setTechado techado
		est.setRazonSocial razonSocial
		est.setNombreContacto nombreContacto
		saveObj(est)
		
	}
}
